Graphically representing related record families using a phantom parent node

ABSTRACT

Embodiments use a phantom apex node to graphically illustrate a plurality of hierarchical records. Each record includes a parent field, and an entry in the parent field identifies a parent record of a given record. The parent record is higher in hierarchy than the given record. Embodiments identify record(s) that have no entry in the parent field. A phantom apex record is added to the database. A reference to the phantom apex record is inserted for each record that did not have an entry in the parent field. An x-y coordinate position is determined for all hierarchical records based on the parent field in each record. Once the positions are determined, all references to the phantom apex record are removed from all of the parent fields, and the phantom apex record itself is removed from the database. The plurality of records are then graphically rendered on a target output medium.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.16/054,822, entitled GRAPHICALLY REPRESENTING RELATED PATENT FAMILIESUSING A PHANTOM PARENT NODE filed Aug. 3, 2018, the disclosure of whichis incorporated herein by reference for all purposes.

BACKGROUND

A plurality of hierarchical records may be graphically represented usinga graphical tree. graphical trees are a common method of visuallyrepresenting a hierarchically-organized structure. Each node in thegraphical tree may represent a given record among a plurality ofhierarchical records, each connection between the nodes may represent ahierarchical relationship between the connected nodes. The graphicaltree representations are expected to convey the hierarchicalrelationship information while conserving a visual aesthetic.

The generation of a graphical tree begins with identifying all nodes anddetermining the placement (e.g. position) of each node on the display oroutput page. Previously, many graphical trees have been generated by ahuman graphic designer. Advancements in computer science resulted indeveloping node-positioning algorithms that calculate the x and y (e.g.x-y) coordinates for every node of the graphical tree. A renderingroutine can then use these coordinates to render the graphical tree. Aconventional node-positioning algorithm has a first constraint togenerate a drawing that is aesthetically pleasing, and a secondconstraint to conserve space on the display or output page. Each ofthese two constraints can be handled straightforwardly by itself, buttaking them together poses challenges especially as the number of nodesof the graphical tree increases.

Many conventional computer-generated graphical trees containsirregularities (e.g. failing to correctly position interior nodes). Inaddition, conventional tree-generating algorithms fail to address alldesign requirements of a graphical tree (e.g. a child node havingmultiple parent nodes, relative rendering of two hierarchical familiesthat are affiliated with each other).

Embodiments of the present invention may solve these problems and otherproblems, individually and collectively.

BRIEF SUMMARY

Embodiments provide methods, systems and mediums for receiving aplurality of hierarchical records, wherein each current record in theplurality of hierarchical records includes a parent field, an entry inthe parent field identifies a parent record of the current record,wherein the parent record is higher in hierarchy than the currentrecord; identifying one or more records among the plurality ofhierarchical records that have no entry in the parent field; adding aphantom apex record to the plurality of hierarchical records; insertinga reference to the phantom apex record for each of the identified one ormore records; determining a position for each of the plurality ofhierarchical records based on the parent field in each record; deletingall references to the phantom apex record in all of the parent fields;removing the phantom apex record from the plurality of hierarchicalrecords; rendering a shape at each determined position for the pluralityof hierarchical records, wherein each shape represents a unique recordamong the plurality of hierarchical records; and visually connecting theshapes based on entries in the parent fields thereby graphicallyillustrating the plurality of hierarchical records on a target outputmedium.

These and other embodiments are described in further detail below.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an exemplary graphical tree including nodesrepresenting a set of hierarchical records, in accordance withembodiments of the present application.

FIG. 2 illustrates an exemplary graphical representation of three setsof affiliated hierarchical records represented by three separategraphical trees, in accordance with embodiments of the presentapplication.

FIG. 3A illustrates an exemplary graphical tree rendered on a firsttarget output medium having a first set of dimensions, in accordancewith embodiments of the present application.

FIG. 3B illustrates the exemplary graphical tree of FIG. 3A rendered ona second target output medium having a second, smaller set ofdimensions, in accordance with embodiments of the present application.

FIG. 4A illustrates an exemplary phantom parent (apex) node forrendering a graphical tree representing two sets of hierarchical recordsthat are affiliated with each other, in accordance with embodiments ofthe present application.

FIG. 4B illustrates the graphical tree of FIG. 4A where the exemplaryphantom parent (apex) node is removed, in accordance with embodiments ofthe present application.

FIG. 4C illustrates a flowchart of steps for generating a graphical treerepresenting two sets of hierarchical records that are affiliated witheach other using a phantom parent (apex) node in the graphical tree, inaccordance with embodiments of the present application.

FIG. 5A illustrates a first exemplary graphical tree including a nodehaving more than one parent node, in accordance with embodiments of thepresent application.

FIG. 5B illustrates a second exemplary graphical tree including a nodehaving more than one parent node, in accordance with embodiments of thepresent application.

FIG. 5C illustrates a flowchart of steps for generating a graphical treeincluding a node representing a hierarchical record in a graphical treeto have more than one parent node, in accordance with embodiments of thepresent application.

FIG. 6A illustrates a graphical tree representing a family ofhierarchical records where one of the nodes is visually identified asincluding missing associated records information, in accordance withembodiments of the present application.

FIG. 6B illustrates a flowchart of steps for generating a graphical treerepresenting a family of hierarchical records where one of the nodes isvisually identified as including missing associated records information,in accordance with embodiments of the present application.

FIG. 7 illustrates exemplary subsystems or components for implementingvarious participants and elements shown in FIGS. 1-6 , in accordancewith embodiments of the present application.

DETAILED DESCRIPTION

Embodiments provide methods and systems for generating graphicalrepresentation(s) of a plurality of hierarchical records. An exemplarygraphical representation (also referred as “a tree” or “a graphicaltree”) includes at least one parent, and hierarchical connections fromthe parent to its children. A given node in the graphical tree (e.g. agiven record among the plurality of hierarchical records) may have morethan one parent. There is no restriction on the number of children eachnode may have, as there is no restriction on the number of parents agiven node may have. That is, a given node can have m parents (where mis 0 or more), and each node can have n children (where n is 0 or more).According to various embodiments, if a node has exactly one child, thechild may be positioned directly below its parent node on a targetoutput medium (e.g. a digital display, a paper).

In some embodiments, a phantom apex node may be used to graphicallyillustrate a plurality of hierarchical records stored, for example, at adatabase. A graphical tree may be rendered, displayed or otherwiseprovided on a target output medium (e.g. a display device, paper). Eachcurrent record in the plurality of hierarchical records may include aparent field, and an entry in the parent field may identify a parentrecord of the current record. By definition, the parent record is higherin hierarchy than the current record. Embodiments may identify one ormore records among the plurality of hierarchical records that have noentry in the parent field. A phantom apex record may then be added tothe database storing the plurality of hierarchical records. Embodimentsthen insert a reference to the phantom apex record for each of theidentified one or more records that did not have an entry in the parentfield. Essentially, a record that does not have an entry in the parentfield is an apex or a parent record in a set (e.g. family) of records.Embodiments add a phantom parent to existing parents of two or morefamilies of records.

Embodiments may then determine a position for each of the plurality ofhierarchical records based on the parent field in each record. Once thepositions are determined, all references to the phantom apex record maybe removed from all of the parent fields, and the phantom apex recorditself may be removed from the database. The plurality of records arethen graphically rendered on the target output medium by rendering ashape at each determined position for the plurality of hierarchicalrecords and visually connecting the shapes based on entries in theparent fields. Each shape on the graphical tree represents a uniquerecord among the plurality of hierarchical records.

The generation of graphical trees according to various embodiments mayadhere to a set of predetermined rules. The set of rules may include oneor more of the following rules:

1. Nodes at the same level of the graphical tree should lie along astraight line, and the straight lines defining the levels should beparallel.

2. A parent should be centered over its offspring.

3. A graphical tree and its mirror image should produce drawings thatare reflections of one another.

4. A subtree should be drawn the same way regardless of where it occursin the graphical tree.

5. Small subtrees should not appear arbitrarily positioned among largersubtrees. Accordingly, small, interior subtrees should be spaced outevenly among larger subtrees (where the larger subtrees are adjacent atone or more levels); and small subtrees at the far left or far rightshould be adjacent to larger subtrees.

According to various embodiments, subtrees may be built as rigid units.That is, when a node is moved on the graphical tree, all of itsdescendants (if it has any) are also moved along with the node. Theentire subtree is treated as a rigid unit. The graphical tree may bepositioned by building the graphical tree up recursively from the leaves(representing children nodes) toward the root (representing the parentnode(s)). Embodiments may use two fields for the positioning of eachnode: a preliminary x-coordinate, and a modifier field. According tovarious embodiments, a preliminary x-coordinate and a modifier may beassigned to each node, and a final x-coordinate for a given node may bedetermined by summing the preliminary x-coordinate of the node with themodifier fields of all of ancestors of the node (i.e. all nodes that arehigher in the hierarchy than the node). The modifier field associatedwith the parent (apex) node (i.e. the root of the entire graphical tree)of the graphical tree may be used in determining the final position ofall of the descendent nodes (i.e. all nodes that are lower in thehierarchy than the parent node) of the graphical tree.

Sibling nodes (i.e. nodes at the same hierarchical level) may beseparated from one another by at least a predefined minimal distance,and adjacent subtrees are separated by at least a predefined subtreeseparation. Subtrees of a node may be formed independently and placed asclose together as the predefined separation values allow.

For a given node, the subtrees are positioned one-by-one, moving, forexample, from left to right. A new subtree is placed to the left of anexisting neighbor (sibling) subtree while aligning the top node, andmoved apart until no two points are touching. Initially the roots of thetwo neighboring subtrees are separated by the sibling separation value.Then, at the next lower level, the roots are pushed apart until thesubtree separation value is established between the adjacent subtrees atthe lower level. When this process is complete for all of the offspringsof a node, the node is centered over its leftmost and rightmostoffspring.

Embodiments produce graphical trees having evenly distributed,proportional spacing among subtrees. When moving a large subtree to theright, the distance it is moved is also apportioned to smaller, interiorsubtrees. The moving of these subtrees is accomplished by adding theproportional values to the preliminary x-coordinate and modifier fieldsof the roots of the small interior subtrees. For example, if three smallsubtrees are bunched at the left because a new large subtree has beenpositioned to the right, the first small subtree to shifted rightproportionally to the gap (e.g. by ¼ of the gap), the second smallsubtree is shifted right proportionally to the gap (e.g. by ½ of thegap), and the third small subtree is shifted right proportionally to thegap (e.g. by ¾ of the gap). The second graphical tree traversaldetermines the final x-coordinate for each node. The second graphicaltree traversal starts at the apex node of the graphical tree, summingeach node's x-coordinate value with the combined sum of the modifierfields of its ancestors. The second graphical tree traversal also adds avalue that guarantees centering of the display with respect to theposition of the apex node of the drawing. A final graphical tree isthereby generated. These features are discussed in “A Node-PositioningAlgorithm for General Trees” TR89-034, September, 1989 by John Q. WalkerII, which is incorporated herein by reference.

Referring now to FIG. 1 , a graphical tree 100 will be described next.The graphical tree 100 may be generated to illustrate a first set ofhierarchical records among a plurality of hierarchical records stored ata storage device (e.g. a database stored at a server memory). In someembodiments, the database may store a list of records and a hierarchicalrelationship among the plurality of hierarchical records. When a subset(including a portion or all) of the hierarchical records are graphicallyrepresented using the graphical tree 100, each node in the graphicaltree 100 represents a unique hierarchical record stored in the database.According to various embodiments, each node may be rendered on a targetoutput medium using a graphical shape (e.g. an icon). The graphicalshape may also include alphanumeric characters, symbols and/or graphicsto illustrate information associated with the corresponding hierarchicalrecord. For example, the graphical icon may include a record ID assignedto the hierarchical record.

Embodiments may embed a link to a corresponding database entry from thenode incorporated in the graphical tree 100. For example, in thegraphical tree 100 illustrated in FIG. 1 , node 108 represents a uniquerecord stored as a database entry on the database. The node 108 may begraphically selectable/activatable. Selecting and/or activating node 108by, for example, clicking on the node 108 using a pointing device such amouse, a stylus pen for touch-screens or user fingertips, the databaseentry associated with the unique record represented by node 108 may beretrieved from the database, and (optionally) displayed to the user.

Each record in the plurality of hierarchical records may include aparent field. An entry in the parent field identifies a parent record ofthat record. The parent record is higher in hierarchy than the record.No entry in the parent filed may indicate that the record does not havea parent. According to some embodiments, the first set of hierarchicalrecords may be inter-related in a predetermined manner. For example, thefirst set of hierarchical records may belong to a family of hierarchicalrecords where the first set of hierarchical records includes a parentrecord and off-springs of the parent record. For example, a recordwithout a parent record may itself be the first record in a given familyof hierarchical records. In some embodiments, the first set ofhierarchical records may include more than one parent records, whichwill be discussed below in greater detail in connection with FIGS.3A-3B.

The graphical tree 100 illustrated in FIG. 1 includes a parent level(e.g. a first hierarchical level) 102, a first off-spring level (e.g. asecond hierarchical level) 104 and a lower second off-spring level (e.g.a third hierarchical level) 106. The third hierarchical level is lowerin hierarchy than the second hierarchical level, which is lower inhierarchy than the first hierarchical level. The exemplary graphicaltree 100 includes one parent node 112 at the parent level 102. Theparent node 112 may represent a parent record among the first set ofhierarchical records (e.g. among a first family of hierarchicalrecords). The first off-spring level 104 includes four nodes 114, 116,118, 120 which are off-springs of the parent node 112. The nodes 114,116, 118, 120 may each represent a child record of the parent recordrepresented by parent node 112. The nodes 114, 116, 118, 120 may bereferred as sibling nodes. The second off-spring level 106 includes twonodes 122, 124 which are off-springs of nodes 114 and 120, respectively.The node 122 represents a child record of the hierarchical recordrepresented by node 114. The node 124 represents a child record of thehierarchical record represented by node 120.

According to various embodiments, visual cues may be added to thegraphical tree to illustrate various types of information associatedwith the hierarchical records. For example, an expired or otherwiseclosed record may be illustrated using a first color, a record where anaction needs to be taken by a predetermined deadline may be illustratedwith a second color, etc. In some embodiments, an initial record mayhave been created in the database, however there may still beoutstanding actions that need to be taken in connection with the initialrecord to transform the initial record to a formal, actual record in thedatabase. Such an initial record may be illustrated using a graphicalnode having broken lines (such as node 232 in FIG. 2 ).

Various embodiments may illustrate two or more sets of hierarchicalrecords as affiliated records (e.g. a first set of records is affiliatedwith a second set of records). As used herein, affiliated records mayrefer to a relationship among records that are related to each other bya criteria other than ancestry. That is, when a first set ofhierarchical records is affiliated with a second set of hierarchicalrecords, no record in the first set of hierarchical records is a parentof any record in the second set of hierarchical records, and no recordin the second set of hierarchical records is a parent of any record inthe first set of hierarchical records.

FIG. 2 illustrates an exemplary graphical representation 200 of threesets of affiliate hierarchical records. The first set of hierarchicalrecords represented by a first graphical tree 210 includes a parentrecord represented by a first node 212 and a child record represented bya second node 214. The second set of hierarchical records represented bya second graphical tree 220 includes a parent record represented by athird node 222, a first child record (represented by a fourth node 224)of the parent record, and a child record (represented by a fifth node226) of the first child record. The third set of hierarchical recordsrepresented by a third graphical tree 230 includes an initial recordrepresented by a sixth node 232. As described above, the initial recordis created in the database. However, when there are outstanding actionsthat need to be taken in connection with the initial record to transformthe initial record to a formal, actual, record in the database, theinitial record is illustrated using a graphical node having broken lines(e.g. sixth node 232).

As provided above, according to some embodiments, a set of hierarchicalrecords may be referred as a family of records. For example, in FIG. 2 ,a first family of records may be illustrated with the first graphicaltree 210, a second family of records may be illustrated with the firstgraphical tree 220, and a third family of records may be illustratedwith the first graphical tree 230. The first, second and third familiesmay belong to a same group (e.g. the families may be managed and/orowned by a single entity). Accordingly, the ability to display thesefamilies together using a single graphical representation 200 may allowfor conveying information about these families simultaneously. Forexample, the ability to display these families together using a singlegraphical representation 200 may enable the owner/manager entity ofthese families to get an overview of a current status of these relatedfamilies of records.

According to various embodiments, generating a graphical tree includesidentifying nodes representing the individual hierarchical records anddetermining an x-y coordinate on a target output medium for each of theplurality of hierarchical records. The target output medium may includea digital screen (e.g. a computer screen, a mobile device screen, atablet screen) or a paper. The x-y coordinate for each node may bedetermined following the algorithm described above such that the nodesare evenly spaced on the target output medium. In some embodiments, auser may wish to switch the display medium after the graphical tree isgenerated. For example, the graphical tree may be rendered on a firstdigital screen having a first set of dimensions. The user may then withto display the same graphical tree on a second, smaller digital screenhaving a second set of dimensions smaller than the first set ofdimensions. Alternatively, the user may wish to display the graphicaltree that is currently displayed on a first window on the first digitalscreen, to a second, larger window on the first digital screen.Embodiments are able to re-render the graphical tree based on thedimensions of the new target output medium such that the initialrendering and the subsequent rendering of the graphical representationsmay have a similar layout, resized according to the requirements of thetarget output medium.

As illustrated in FIG. 3A, a first graphical tree 300 may be rendered ona first, larger target output medium. The x-y coordinate for each nodeof the first graphical tree 300 may be determined based on thedimensions of the first target output medium. The contents 302 of eachnode of the first graphical tree 300 may include a first set ofinformation represented using one or more of alphanumerical characters,symbols and/or graphics. The first graphical tree 300 may represent afirst set of hierarchical records.

The same set of hierarchical records may be represented on a second,smaller target output medium using the second graphical tree 350. Asshown in FIG. 3B, the second graphical tree 350 has a similar overallshape as the first graphical tree 300. Since the second graphical tree350 is rendered on a smaller target output medium, the contents 352 ofeach node of the second graphical tree 350 may include a second set ofinformation that is less than the first set of information. The secondset of information may also be represented using one or more ofalphanumerical characters, symbols and/or graphics. As such, theposition (x-y coordinates) for a given record among the plurality ofhierarchical records on a first target output medium having a first setof dimensions is different than the position (x-y coordinates) for thegiven record on a second target output medium having a second, differentset of dimensions.

Phantom Parent/Apex Node

When generating a graphical tree representing two sets of hierarchicalrecords that are affiliated with each other, embodiments allow foraligning the nodes at a given level in both sets of hierarchicalrecords. This is accomplished by using a phantom parent (apex) node inthe graphical tree.

As shown in FIG. 4A, a first set of hierarchical records 400 and thesecond set of hierarchical records 450 are illustrated using a graphicaltree 440. The first set of hierarchical records 400 are stored on thedatabase as being affiliated with the second set of hierarchical records450. As provided above, affiliate or affiliated records refer to arelationship among records that are related to each other by a criteriaother than ancestry. That is, no record in the first set of hierarchicalrecords 400 is a parent of any record in the second set of hierarchicalrecords 450, and no record in the second set of hierarchical records 450is a parent of any record in the first set of hierarchical records 400.The graphical tree 440 illustrated in FIG. 4A includes threehierarchical levels: a first hierarchical level 410, a secondhierarchical level 412 and a third hierarchical level 414.

The first set of hierarchical records 400 includes a first node 402 atthe first hierarchical level 410. The first node 402 is the parent(apex) node representing the parent record in the first set ofhierarchical records 400. Accordingly, the parent field of thehierarchical record represented by the first node 402 does not have anentry in its parent field. The second set of hierarchical records 450includes a second node 452 at the first hierarchical level 410. Thesecond node 452 is the parent (apex) node representing the parent recordin the second set of hierarchical records 452. Accordingly, the parentfield of the hierarchical record represented by the first node 452 doesnot have an entry in its parent field. As shown in FIG. 4A, the firstnode 402 and the second node 452 (i.e. the parent node of the first setof hierarchical records 400 and the parent node of the second set ofhierarchical records 450) are aligned on the graphical tree 440.Similarly, the first set of hierarchical records 400 includes a thirdnode 404 at the second hierarchical level 412. The third node 404 is thechild (descendent) node of the parent node 402 representing the parentrecord of the first set of hierarchical records 400. The second set ofhierarchical records 450 includes a fourth node 454 at the secondhierarchical level 412. The fourth node 454 is the child (descendent)node of the parent node 452 representing the parent record of the secondset of hierarchical records 450. As shown in FIG. 4A, the third node 404and the fourth node 454 are aligned on the graphical tree 440. Inaddition, the second set of hierarchical records 450 includes a fifthnode 456 at the third hierarchical level 414. The fifth node 456 is thechild (descendent) node of the child node 454 of the second set ofhierarchical records 450. As shown in FIG. 4A, since there are nocorresponding entries at the third level 414 in the first set ofgraphical records, only fifth node 456 is displayed at the third level414.

The alignment of nodes in a given hierarchical level of affiliate setsof records is accomplished by using a phantom parent (apex) node 420that acts as a pseudo apex for both the first set of hierarchicalrecords 400 and the second set of hierarchical records 450. Accordingly,the phantom parent (apex) node 420 becomes the pseudo-parent node of theparent node 402 of the first set of hierarchical records 400 and thepseudo-parent node of the parent node 452 of the second set ofhierarchical records 450.

FIG. 4C illustrates a flowchart 460 of steps for generating a graphicaltree representing two sets of hierarchical records that are affiliatedwith each other using a phantom parent (apex) node in the graphicaltree. Given a plurality of hierarchical records stored at a database, aphantom apex record is added to the plurality of hierarchical records ata step S462. That is, an entry for the phantom apex record is generatedin the database. As provided above, initially, the parent field of boththe hierarchical record represented by the parent node 402 and thehierarchical record represented by the parent node 452 did not containany entries. The nodes 402 and 452 are identified at step S464, and theparent fields of these records are modified to insert an entryidentifying the phantom parent (apex) record at step S466. Then, aposition for the each of the nodes 402 and 404 is determined based onthe phantom parent (apex) record at step S468. Similarly, a position foreach of the nodes 452, 454 and 456 is determined based on at least thephantom parent (apex) record at step S470. The graphical tree 442representing the two affiliated sets of graphical records is therebygenerated.

Once the positions of all nodes are determined, all references to thephantom apex record are deleted from all of the parent fields, and thephantom apex record is removed from the plurality of hierarchicalrecords at step S472. The phantom parent (apex) node 420 illustrated inFIG. 4A is shown for illustrative purposes only. According to variousembodiments, the phantom parent (apex) node 420 is not added to thegraphical tree representing the affiliate sets of graphical records.That is, as shown in FIG. 4B, the phantom parent (apex) node 420 is nota part of the graphical tree 442. According to various embodiments, afixed distance may be added or subtracted from each of the positions inorder to move a graphical representation of the plurality ofhierarchical records over where the phantom apex node 420 would havebeen rendered, such that the nodes at the first hierarchical level 410(e.g. nodes 402 and 452 at FIG. 4A) will be aligned with each other, andcentered below the phantom apex node 420.

At step S474, the graphical tree 442 is rendered on the target outputmedium by rendering a shape representing a unique record at eachdetermined position for the plurality of hierarchical records. Theshapes are then visually connecting (e.g. by using a line) based onentries in the parent fields. As shown in FIG. 4B, the first set ofhierarchical records 400 and the second set of hierarchical records 450are rendered as sibling groups of hierarchical records.

Graphically Representing Multiple Parents Claims

Embodiments further allow a node representing a hierarchical record in agraphical tree to have more than one parent node. In some embodiments, achild record among the plurality of hierarchical records may have one ormore parent fields identifying a first parent record and a second parentrecord of the child record.

Referring to FIG. 5A, the graphical tree 500 illustrates an exemplarychild record represented by a child node 502 that has a first parentrecord represented by a first parent node 504 and a second parent recordrepresented by a second parent node 506. When determining the positionsof respective nodes 502, 504, 506 on the target output medium, a firstposition (i.e. x-y coordinate) for the child node 502 and a secondposition for the first parent node 504 may be determined withoutconsidering the second parent node 506. The first parent node 504 (e.g.the second position) is provided at a first, higher hierarchical level510 and the child node 502 provided at a second, lower hierarchicallevel 512 on the target output medium.

At a subsequent step, a third position for the second parent node 506may be determined at a same hierarchical level (i.e. the first, higherhierarchical level 510) as the first parent node 504. Embodiments thenrender a first shape (e.g. child node 502) at the first position, asecond shape (e.g. first parent node 504) at the second position and athird shape (e.g. second parent node 506) at the third position. Thefirst shape is then visually connected with the second shape and thethird shape to form the graphical tree 500 that graphically illustratesthe plurality of hierarchical records on the target output medium.

According to various embodiments, visually connecting the shapes mayinclude drawing a first line 505 between the first shape and the secondshape, and drawing a second line 507 between the first shape and thethird shape, without visually connecting the second shape and the thirdshape. As illustrated in FIG. 5A, the first parent node 504 is renderedat a sibling level of the second parent node 506 such that the firstparent record is represented as a sibling of the second parent record.

According to various embodiments, the child record that has more thanone parent records may be lower in a hierarchical level than that isillustrated in FIG. 5A. For example, FIG. 5B illustrates a graphicaltree 540 having three hierarchical levels: a first hierarchical level580, a second hierarchical level 582 lower than the first hierarchicallevel 580, and a third hierarchical level 584 lower than the secondhierarchical level 582. The child record having multiple parents may beprovided at the lower third hierarchical level 584. The graphical tree540 may include a parent node 542 having three children nodes 544, 546,548. The child node 544 may have two child nodes 550, 552. The childnode 550, as well as the child node 552 may also have the node 548 astheir parent. Accordingly, the child node 550 may have node 544 as afirst parent node and node 548 as a second parent node. Similarly, thechild node 552 may have node 544 as a first parent node and node 548 asa second parent node.

FIG. 5C illustrates a flowchart 560 of steps for generating a graphicaltree including a node representing a hierarchical record in a graphicaltree to have more than one parent nodes. At step S562, embodiments mayaccess a database storing a plurality of hierarchical records. At stepS564, embodiments may identify a child record having one or more parentfields identifying multiple parent records, e.g. a first parent record,and a second parent record. At step S566, a first position for a firstnode representing the child record and a second position for a secondnode representing the first parent are determined without consideringthe second parent record. At step S568, a third position is determinedfor a third node representing the second parent record is determined tobe at a same level as the position of the second node representing thefirst parent. At step S570, embodiments render a first shape, a secondshape and a third shape at the first position, the second position andthe third position, respectively. The first shape illustrates the firstnode, the second shape illustrates the second node and the third shapeillustrates the third node. At step S572, the first shape is visuallyconnected with the second shape and the third shape (without connectingthe second shape with the third shape) to generate a graphical treerepresenting the plurality of hierarchical records including a nodehaving more than one parent nodes on a target output medium.

Compare Related Matters Claims

According to various embodiments, a first set of records among theplurality of hierarchical records may be associated with each other.According to various embodiments, the term “associated records” mayrefer to a set of records where a given record in the set is related toother records in the same set by any type of relation including but notlimited to a relationship defined when the records are generated, anassociation defined by a user, or ancestry (i.e. the given record is aparent, a descendent or a sibling of each of the other records in thesame set).

If records in a given set of records are related to each other only byancestry, that given set of records may be referred as a family ofhierarchical records. Accordingly, all records in the same family mustidentify all remaining records of the same family as their associatedrecords. As provided above, relationship by ancestry is an example ofassociation among records. To ensure this cross-relation, embodimentsreview associated records to identify if one of the records in thefamily fails identify a given record in the same family as an associatedrecord. For example, if a family includes 5 records (e.g. records A, B,C, D and E), each record (e.g. record A) must identify the remaining 4records (e.g. records B, C, D and E) as associated records. If one ofrecords (e.g. record B) identifies less than 4 records (e.g. records A,C, D) as associated records, that record (e.g. record B) will bevisually identified in the graphical tree representing the family of 5records.

FIG. 6A shows a graphical tree 600 representing a family of hierarchicalrecords where one of the nodes is visually identified as includingmissing associated record information. According to various embodiments,a plurality of hierarchical records may be stored at a database. Thatis, each record may have a database entry providing details about therecord. A given database entry may have a parent field and an associatedrecords field for a given record. An entry in the parent fieldidentifies a parent record of the given record. An entry in theassociated records field identifies one or more records that areassociated with the given record.

For example, in the graphical tree 600 shown in FIG. 6A, the node 604may correspond to a first record. The first record may include areference to a parent record represented by node 602 in the parentfield, and references to records represented by nodes 606, 608, 610,612, 614 in the associated records field. Embodiments may ensure foreach one of the records represented by nodes 602, 604, 606, 608, 610,612 and 614 lists the records represented by the remaining of the nodesin the family in their associated records fields. This may beaccomplished by traversing the database away from and toward theselected record (e.g. record represented by node 604) to determine afirst list of all records that are close or distant relatives (e.g.records represented by nodes 606, 608, 610, 612, 614) of the selectedrecord. According to various embodiments, the first list may bedetermined based on one or more of the parent field of the selectedrecord, the parent fields of all the records of the family, orassociated records fields of all the records of the family.

Embodiments may then determine a second list of records based on theassociated records field of the selected record. When the first list andthe second list are compared against each other, a missing record (e.g.identified by node 614) may be identified if the missing record appearsin the first list but not in the second list. The node representing themissing record (e.g. node 614) may be visually identified on thegraphical tree 600. For example the node 614 may be displayed using apredetermined color, a shape that is different than the remainder of thenodes of the same graphical tree, a textured line, shading,highlighting, etc.

FIG. 6B illustrates a flowchart 660 of steps for generating a graphicaltree representing a family of hierarchical records where one of thenodes is visually identified as including missing associated recordsinformation. At step S662, embodiments may access a database storing aplurality of hierarchical records. At step S664, embodiments may select(or receive a selection of) a first record among the plurality ofhierarchical records. At step S666, embodiments identify a first groupof hierarchical records among the plurality of hierarchical recordsbased on at least the parent field of the first record. At step S668,entries in the associated records field of the first record are comparedto the first group of hierarchical records. At step S670, a missingrecord is identified among the first group of hierarchical records thatdoes not have an entry in the associated records field of the firstrecord. At step S672, embodiments graphically represent the first recordand the first group of hierarchical records on a target output mediumwhere the missing record is visually set apart from the first record andthe first group of hierarchical records.

Once the missing record is identified and visually represented to auser, the user may then provide input to correct the records stored onthe database. For example, the user may provide an input to update themissing record into the associated records field of the selected record.Some embodiments may further receive an input to update the missingrecord into the associated records field of the first record at stepS674 and update the associated records field of the first record withthe missing record at step S676.

Caching Parent & Child Data

Various embodiments may identify parent record(s) and child record(s) ina given family of records, and may cache this information on a localstorage device such that a graphical tree representing the family may bequickly and efficiently rendered on the local device. For example, whena user interacting with the embodiments requests the generation of agraphical tree to represent a first set of hierarchical records,embodiments may access a remote database storing a plurality ofhierarchical records to identify, for each record, every child recordfor a selected record using the parent fields from different records inthe database. Embodiments may then store, for each record, every childrecord in one or more child fields of the selected record on a localdatabase. Similarly, the parent fields for each record are also storedon the local database. Each record in the plurality of records may beassociated with a family such that each family is defined by all recordsthat are close or distant relatives of each other in the database (e.g.each family includes records that are related to each other byancestry). When a user interacting with the local device selects arecord, embodiments may render a graphical tree representing the familyof the selected record using the stored parent and child fields from thelocal database.

The various embodiments discussed above may be used to illustrate patentapplication records. For example, the database may store a plurality ofpatent application records. As used herein, a patent application or apatent application record may include, but is not limited to, domesticpatent applications, domestic patents, foreign patent applications andforeign patents. The visual cues discussed above may be used toillustrate whether a patent application is allowed, pending or expired.The nodes or graphical shapes used to illustrate a corresponding patentapplication may also display information such as the application number,a docket number, and/or a filing country of the corresponding patentapplication. A set of patent applications may form a family as they maybe inter-related by ancestry. In certain cases, a first non-provisionalpatent application may claim priority to more than one provisionalpatent application. Therefore, the first non-provisional patentapplication may have the more than one provisional patent application asits parent records. In some embodiments two patent families may beaffiliated. For example, a first patent family and a second patentfamily may be directed to similar subject matter without claimingpriority to each other. These two affiliated patent families may begraphically illustrated next to each other. In addition, these twoaffiliated patent families may be listed among the related recordsfields of each other. In some embodiments, a first patent application ina family may list other patent applications in the same family inassociated records field of the first patent application. Embodimentsmay identify a second patent application in the same family that doesnot list at least one of the remaining members of the family in anassociated records field of the second patent application. Theidentified second patent application with missing information may bevisually identified (e.g. using a different color, a different border)on the graphical tree.

The various participants and elements shown in FIGS. 1-6 may operate oneor more computer apparatuses (e.g., a server computer) to facilitate thefunctions described herein. Any of the elements in FIGS. 1-6 may use anysuitable number of subsystems to facilitate the functions describedherein. Examples of such subsystems or components are shown in FIG. 7 .

FIG. 7 shows a block diagram of a system 700 comprising a number ofcomponents according to some embodiments of the invention. The systemcomprises a computer device 702 in communication with a records database704. The records database 704 may store a plurality of records and dataassociated with each one of the plurality of records. According tovarious embodiments, the records database 704 may be at a remotelocation compared to the computer device 702. The exemplary computerdevice 702 may comprise, but is not limited to, a processor 702A, anoutput element 702C, an input element 702D, a computer readable medium702E, a local memory 702F, and a network interface 702G.

The output element 702C may comprise any suitable devices that mayoutput data. Examples of output elements 702C may include displayscreens, speakers, data transmission devices, printing devices, etc. Theinput element 702D may include any suitable device capable of inputtingdata into the computer device 702. Examples of input devices includemouse, keyboard, stylus pens, buttons, touchscreens, touch pads,microphones, etc. The local memory 702F may store data saved thereon.For example, the local memory may store the cached parent/child datainformation described above. The network interface 702G may include aninterface that can allow the access device 702 to communicate withexternal computers or databases, such as the records database 704.

The computer readable medium 702E may comprise code, executable by theprocessor 702A, to implement a method comprising: receiving a pluralityof hierarchical records, wherein each current record in the plurality ofhierarchical records includes a parent field, an entry in the parentfield identifies a parent record of the current record, wherein theparent record is higher in hierarchy than the current record;identifying one or more records among the plurality of hierarchicalrecords that have no entry in the parent field; adding a phantom apexrecord to the plurality of hierarchical records; inserting a referenceto the phantom apex record for each of the identified one or morerecords; determining a position for each of the plurality ofhierarchical records based on the parent field in each record; deletingall references to the phantom apex record in all of the parent fields;removing the phantom apex record from the plurality of hierarchicalrecords; rendering a shape at each determined position for the pluralityof hierarchical records, wherein each shape represents a unique recordamong the plurality of hierarchical records; and visually connecting theshapes based on entries in the parent fields thereby graphicallyillustrating the plurality of hierarchical records on a target outputmedium.

Specific details regarding some of the above-described aspects areprovided below. The specific details of the specific aspects may becombined in any suitable manner without departing from the spirit andscope of embodiments of the invention.

Storage media and computer readable media for containing code, orportions of code, may include any appropriate media known or used in theart, including storage media and communication media, such as but notlimited to volatile and non-volatile, removable and non-removable mediaimplemented in any method or technology for storage and/or transmissionof information such as computer readable instructions, data structures,program modules, or other data, including RAM, ROM, EEPROM, flash memoryor other memory technology, CD-ROM, digital versatile disk (DVD) orother optical storage, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices, data signals, datatransmissions, or any other medium which may be used to store ortransmit the desired information and which may be accessed by thecomputer. Based on the disclosure and teachings provided herein, aperson of ordinary skill in the art may appreciate other ways and/ormethods to implement the various embodiments.

It may be understood that the present invention as described above maybe implemented in the form of control logic using computer software in amodular or integrated manner. Based on the disclosure and teachingsprovided herein, a person of ordinary skill in the art may know andappreciate other ways and/or methods to implement the present inventionusing hardware and a combination of hardware and software

Any of the software components or functions described in thisapplication, may be implemented as software code to be executed by aprocessor using any suitable computer language such as, for example,Java, C++ or Perl using, for example, conventional or object-orientedtechniques. The software code may be stored as a series of instructions,or commands on a computer readable medium, such as a random accessmemory (RAM), a read only memory (ROM), a magnetic medium such as ahard-drive or a floppy disk, or an optical medium such as a CD-ROM. Anysuch computer readable medium may reside on or within a singlecomputational apparatus, and may be present on or within differentcomputational apparatuses within a system or processing server computer.

The above description is illustrative and is not restrictive. Manyvariations of the invention may become apparent to those skilled in theart upon review of the disclosure. The scope of the invention may,therefore, be determined not with reference to the above description,but instead may be determined with reference to the pending claims alongwith their full scope or equivalents.

One or more features from any embodiment may be combined with one ormore features of any other embodiment without departing from the scopeof the invention.

A recitation of “a”, “an” or “the” is intended to mean “one or more”unless specifically indicated to the contrary.

What is claimed is:
 1. A method for graphically illustrating a pluralityof hierarchical records, the method comprising: receiving, by a computerdevice, a user request for a record stored at a database; identifying,by the computer device, a first group of hierarchical records associatedwith the requested record among the plurality of hierarchical recordsstored at the database in response to the user request, wherein eachcurrent record in the plurality of hierarchical records includes aparent field that identifies a parent record of the current record,wherein the parent record is higher in hierarchy than the currentrecord, wherein the first group of hierarchical records consists of afirst family of records that includes a first apex record at a highestpoint in hierarchy with no entry in the parent field of the first apexrecord, wherein the first group of hierarchical records includes therequested record; identifying a second group of hierarchical recordsamong the plurality of hierarchical records as being related to thefirst group of hierarchical records including a second apex record atthe highest point in hierarchy with no entry in the parent field of thesecond apex record, wherein the second group of hierarchical recordsincludes at least a second family of records; creating, by the computerdevice, a phantom apex record; inserting, by the computer device, areference to the phantom apex record in each of the first apex recordand the second apex record; determining, by the computer device, aposition for each of the plurality of hierarchical records based on theparent field in each record; after determining the position for each ofthe plurality of hierarchical records, deleting, by the computer device,the references to the phantom apex record in the first apex record andthe second apex record while storing a second position determined forthe phantom apex record; rendering, by the computer device, a shape ateach determined position for the plurality of hierarchical recordsexcluding the phantom apex record to prevent the phantom apex recordfrom being rendered at the second position determined for the phantomapex record, wherein each shape represents a unique record among theplurality of hierarchical records such that the first group ofhierarchical records is rendered adjacent to and disconnected from thesecond group of hierarchical records, the first apex record beingrendered at a same level as the second apex record and no shaperepresenting the phantom apex record is rendered at the second positiondetermined for the phantom apex record; and graphically connecting, bythe computer device, the shapes based on entries in the parent fields toillustrate the plurality of hierarchical records on a target outputmedium.
 2. The method of claim 1, wherein no record in the first groupof hierarchical records is identified by an entry in the parent field ofany record in the second group of hierarchical records, and wherein norecord in the second group of hierarchical records is identified by anentry in the parent field of any record in the first group ofhierarchical records.
 3. The method of claim 1, wherein identifying thefirst group of hierarchical records or the second group of hierarchicalrecords includes: identifying, by the computer device, a list of recordsand a hierarchical relationship among the plurality of hierarchicalrecords.
 4. The method of claim 1, wherein determining the position foreach of the plurality of hierarchical records includes: determining, bythe computer device, an x-y coordinate on the target output medium forrendering the shape at each determined position for each of theplurality of hierarchical records on the target output medium.
 5. Themethod of claim 1, wherein the position for a given record among theplurality of hierarchical records on a first target output medium havinga first set of dimensions is different than the position for the givenrecord on a second target output medium having a second set ofdimensions, wherein the first target output medium has a different sizethan the second target output medium.
 6. The method of claim 1, whereinthe target output medium includes a digital display or a sheet of paper.7. The method of claim 1, further comprising: adding or subtracting, bythe computer device, a fixed distance from each of the positions inorder to move a graphical representation of the plurality ofhierarchical records over where the phantom apex record would have beenrendered.
 8. The method of claim 1, wherein the plurality ofhierarchical records are graphically illustrated utilizing a graphicaltree.
 9. A system comprising: a processor and a non-transitorycomputer-readable medium coupled to the processor, the non-transitorycomputer-readable medium comprising instructions that, when executed bythe processor, cause the processor to: receive a user request for arecord stored at a database; identifying a first group of hierarchicalrecords associated with the requested record among a plurality ofhierarchical records stored at the database in response to the userrequest, wherein each current record in the plurality of hierarchicalrecords includes a parent field that identifies a parent record of thecurrent record, wherein the parent record is higher in hierarchy thanthe current record, wherein the first group of hierarchical recordsconsists of a first family of records that includes a first apex recordat a highest point in hierarchy with no entry in the parent field of thefirst apex record, wherein the first group of hierarchical recordsincludes the requested record; identify a second group of hierarchicalrecords among the plurality of hierarchical records as being related tothe first group of hierarchical records including a second apex recordat the highest point in hierarchy with no entry in the parent field ofthe second apex record, wherein the second group of hierarchical recordsincludes at least a second family of records; create a phantom apexrecord; insert a reference to the phantom apex record for each of thefirst apex record and the second apex record; determine a position foreach of the plurality of hierarchical records based on the parent fieldin each record; after determining the position for each of the pluralityof hierarchical records, delete the references to the phantom apexrecord in the first apex record and the second apex record while storinga second position determined for the phantom apex record; render a shapeat each determined position for the plurality of hierarchical recordsexcluding the phantom apex record to prevent the phantom apex recordfrom being rendered at the second position determined for the phantomapex record, wherein each shape represents a unique record among theplurality of hierarchical records such that the first group ofhierarchical records is rendered adjacent to and disconnected from thesecond group of hierarchical records, the first apex record beingrendered at a same level as the second apex record and no shaperepresenting the phantom apex record is rendered at the second positiondetermined for the phantom apex record; and graphically connect theshapes based on entries in the parent fields to illustrate the pluralityof hierarchical records on a target output medium.
 10. The system ofclaim 9, wherein no record in the first group of hierarchical records isidentified by an entry in the parent field of any record in the secondgroup of hierarchical records, and wherein no record in the second groupof hierarchical records is identified by an entry in the parent field ofany record in the first group of hierarchical records.
 11. The system ofclaim 9, wherein identifying the first group or the second group ofhierarchical records includes: identifying a list of records and ahierarchical relationship among the plurality of hierarchical records.12. The system of claim 9, wherein determining the position for each ofthe plurality of hierarchical records includes: determining an x-ycoordinate on the target output medium for rendering the shape at eachdetermined position for each of the plurality of hierarchical records onthe target output medium.
 13. The system of claim 9, wherein theposition for a given record among the plurality of hierarchical recordson a first target output medium having a first set of dimensions isdifferent than the position for the given record on a second targetoutput medium having a second set of dimensions, wherein the firsttarget output medium has a different size than the second target outputmedium.
 14. The system of claim 9, wherein determining the position foreach of the plurality of hierarchical records comprises: adding orsubtracting a fixed distance from each of the positions in order to movegraphical representation of the plurality of hierarchical records overwhere the phantom apex record would have been rendered.
 15. Anon-transitory computer-readable medium storing instructions that, whenexecuted by a processor, cause the processor to: receive a user requestfor a record stored at a database; identify a first group ofhierarchical records associated with the requested record among aplurality of hierarchical records stored at the database in response tothe user request, wherein each current record in the plurality ofhierarchical records includes a parent field that identifies a parentrecord of the current record, wherein the parent record is higher inhierarchy than the current record, wherein the first group ofhierarchical records consists of a first family of records that includesa first apex record at a highest point in hierarchy with no entry in theparent field of the first apex record, wherein the first group ofhierarchical records include the requested record; identify a secondgroup of hierarchical records among the plurality of hierarchicalrecords as being related to the first group of hierarchical recordsincluding a second apex record at the highest point in hierarchy with noentry in the parent field of the second apex record, wherein the secondgroup of hierarchical records includes at least a second family ofrecords; create a phantom apex record; insert a reference to the phantomapex record in each of the first apex record and the second apex record;determine a position for each of the plurality of hierarchical recordsbased on the parent field in each record; after determining the positionfor each of the plurality of hierarchical records, delete the referencesto the phantom apex record in the first apex record and the second apexrecord while storing a second position determined for the phantom apexrecord; render a shape at each determined position for the plurality ofhierarchical records excluding the phantom apex record to prevent thephantom apex record from being rendered at the second positiondetermined for the phantom apex record, wherein each shape represents aunique record among the plurality of hierarchical records such that thefirst group of hierarchical records is rendered adjacent to anddisconnected from the second group of hierarchical records, the firstapex record being rendered at a same level as the second apex record andno shape representing the phantom apex record is rendered at the secondposition determined for the phantom apex record; and graphically connectthe shapes based on entries in the parent fields to illustrate theplurality of hierarchical records on a target output medium.
 16. Thenon-transitory computer-readable medium of claim 15, wherein no recordin the first group of hierarchical records is identified by an entry inthe parent field of any record in the second group of hierarchicalrecords, and wherein no record in the second group of hierarchicalrecords is identified by an entry in the parent field of any record inthe first group of hierarchical records.
 17. The non-transitorycomputer-readable medium of claim 15, wherein identifying the firstgroup or the second group of hierarchical records includes: receiving alist of records and a hierarchical relationship among the plurality ofhierarchical records.
 18. The non-transitory computer-readable medium ofclaim 15, wherein determining the position for each of the plurality ofhierarchical records includes: determining an x-y coordinate on thetarget output medium for rendering the shape at each determined positionfor each of the plurality of hierarchical records on the target outputmedium.
 19. The non-transitory computer-readable medium of claim 15,wherein the position for a given record among the plurality ofhierarchical records on a first target output medium having a first setof dimensions is different than the position for the given record on asecond target output medium having a second set of dimensions, whereinthe first target output medium has a different size than the secondtarget output medium.
 20. The non-transitory computer-readable medium ofclaim 15, wherein determining the position for each of the plurality ofhierarchical records comprises: adding or subtracting a fixed distancefrom each of the positions in order to move graphical representation ofthe plurality of hierarchical records over where the phantom apex recordwould have been rendered.